/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package iluscodelogica;

import excepciones.InterpreteException;
import java.io.IOException;

/**
 * 
 * Clase para inicializa el analisis lexico y sintactico
 *
 * @author IlusCode Software para aprender a programar
 */
public class Interprete {

    private String cadenaCodigo;
    private Algoritmo algoritmo;
    /**
     *
     */
    public Robot robot;

    /**
     *
     * @param cadena
     */
    public Interprete(String cadena) {

        this.cadenaCodigo = cadena;
        robot = new Robot();
    }

    /**
     *
     * @return
     */
    public String getCadenaCodigo() {
        return cadenaCodigo;
    }

    /**
     *
     * @param cadenaCodigo
     */
    public void setCadenaCodigo(String cadenaCodigo) {
        this.cadenaCodigo = cadenaCodigo;
    }

    /**
     * 
     * Metodo que comienza la compilación del archivo pasando como parmetro un 
     * String a la metodo parser de la clase IlusParser
     *
     * @throws InterpreteException
     */
    public void compilarArchivo() throws InterpreteException {



        IlusParser parser = new IlusParser();

        try {

            algoritmo = parser.parser(cadenaCodigo);
            ejecutarArchivo();

        } catch (IOException e) {

            System.out.println("Se produjo un error de entrada y/o salida");

        }
    }

    /**
     *
     * @return
     */
    public Algoritmo getAlgoritmo() {
        return algoritmo;
    }

    /**
     *
     * @param algoritmo
     */
    public void setAlgoritmo(Algoritmo algoritmo) {
        this.algoritmo = algoritmo;
    }

    /**
     *
     * @return
     */
    public Robot getRobot() {
        return robot;
    }

    /**
     *
     * @param robot
     */
    public void setRobot(Robot robot) {
        this.robot = robot;
    }

    /**
     *
     */
    public void ejecutarArchivo() {

        getRobot().setAlgoritmo(algoritmo);

    }
}
